package reflect;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class ReflectDemo6 {
    // 程序的入口点
    public static void main(String[] args) throws Exception {
        // 通过反射获取Class对象，此处动态加载Person类
        Class<?> cls = Class.forName("reflect.Person");
        // 获取Person类中特定的say方法，参数为String和int类型
        Method method = cls.getMethod("say", String.class, int.class);

        // 输出方法名
        String name = method.getName();
        System.out.println("方法名:"+name);

        // 输出方法的返回类型
        Class<?> returnType = method.getReturnType();
        System.out.println("返回类型:"+returnType);

        // 输出方法的参数个数
        int count = method.getParameterCount();
        System.out.println("参数个数:"+count);

        // 输出方法的访问权限
        int modifiers = method.getModifiers();
        switch (modifiers) {
            case Modifier.PUBLIC:
                System.out.println("访问权限为public");
                break;
            case Modifier.PRIVATE:
                System.out.println("访问权限为private");
                break;
            case Modifier.PROTECTED:
                System.out.println("访问权限为protected");
                break;
            default:
                System.out.println("访问权限为default");
        }
    }
}
